﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Sistema_Totem.Logica.Clases;
using Sistema_Totem.Datos.SqlServer;

namespace Sistema_Totem.Pruebas
{
    /// <summary>
    /// Etiqueta a la clase para casos de prueba.
    /// </summary>
    [TestFixture]
    public class PruebaSqlUsuario
    {
        #region Prueba Unitaria Agregar Usuario
        /// <summary>
        /// Prueba que valida que el Usuario
        /// se crea correctamente.
        /// </summary>
        [Test]
        public void AgregarUsuario()
        {
            // Variables del Rol
            Rol rol = new Rol();
            rol.Nombre = "Gerente de proyecto";
            rol.Id = 1;

            // Variables del Usuario
            int idUsuario = 1;
            String nick = "Paola es la mejor";
            String nombre= "Paola";
            String clave = "123456";
            String telefono = "04126177102";
            String correo = "Paola@hotmail.com";

            int retorno = 0;
            // Seteamos en el constructor los valores de prueba
            Usuario usuario = new Usuario(idUsuario, nick, nombre, clave, correo, telefono, rol);
            SqlServerUsuario serverUsuario = new SqlServerUsuario();
            retorno = serverUsuario.AgregarUsuario(usuario);

            //Assert que comprueba que no hay un campo nulo.
            Assert.IsNotNull(usuario.Nombre);
            Assert.IsNotNull(usuario.Nickname);
            Assert.IsNotNull(usuario.Clave);
            Assert.IsNotNull(usuario.Correo);
            Assert.IsNotNull(usuario.Telefono);
            Assert.IsNotNull(usuario.Rol);
            
            //Assert que comprueba que se realizo bien la insercion.
            Assert.AreNotEqual(retorno,0);
        }
        #endregion Prueba Unitaria Agregar Usuario

        #region Prueba Unitaria Modificar Usuario
        /// <summary>
        /// Prueba que valida que el usuario
        /// se modifica correctamente.
        /// </summary>
        [Test]
        public void ModificarUsuario()
        {
            // Variables del Rol
            Rol rol = new Rol();
            rol.Nombre = "Gerente de Proyecto";
            rol.Id =1;

            // Variables del Usuario
            int idUsuario = 1;
            String nick = "Carlos Magurno";
            String nombre = "Carlos Magurno";
            String clave = "123456";
            String telefono = "04126177102";
            String correo = "maguca@gmail.com";

            int retorno = 0;
            // Seteamos en el constructor los valores de prueba
            Usuario usuario = new Usuario(idUsuario, nick, nombre, clave, correo, telefono, rol);
            SqlServerUsuario serverUsuario = new SqlServerUsuario();
            retorno = serverUsuario.ModificarUsuario(usuario);

            //Assert que comprueba que no hay un campo nulo.
            Assert.IsNotNull(usuario.Nombre);
            Assert.IsNotNull(usuario.Nickname);
            Assert.IsNotNull(usuario.Clave);
            Assert.IsNotNull(usuario.Correo);
            Assert.IsNotNull(usuario.Telefono);
            Assert.IsNotNull(usuario.Rol);

            //Assert que comprueba que se realizo bien la Modificacion.
            Assert.AreEqual(retorno, 1);
        }
        #endregion Prueba Unitaria Modificar Usuario

        #region Prueba Unitaria Consultar Usuario
        /// <summary>
        /// Prueba que valida que el Usuario
        /// se consulte correctamente.
        /// </summary>
        [Test]
        public void ConsultarUsuario()
        {
            // Variables del Rol
            Rol rol = new Rol();
            rol.Nombre = "Gerente de proyecto";

            // Variables del Usuario
            int idUsuario = 1;
            String nick = "Paola es la mejor";
            String nombre = "Paola";
            String clave = "123456";
            String telefono = "04126177102";
            String correo = "Paola@hotmail.com";
            List<Usuario> listaUsuario = new List<Usuario>();
           
            // Seteamos en el constructor los valores de prueba
            Usuario usuario = new Usuario(idUsuario, nick, nombre, clave, correo, telefono, rol);
            SqlServerUsuario serverUsuario = new SqlServerUsuario();
            listaUsuario = serverUsuario.ConsultarUsuarios();

            //Assert que comprueba que no hay un campo nulo.
            Assert.IsNotNull(usuario.Nombre);
            Assert.IsNotNull(usuario.Nickname);
            Assert.IsNotNull(usuario.Clave);
            Assert.IsNotNull(usuario.Correo);
            Assert.IsNotNull(usuario.Telefono);
            Assert.IsNotNull(usuario.Rol);

           
        }
        #endregion Prueba Unitaria Agregar Usuario
    }
}